package net.xumf.service.master;

import net.xumf.domain.master.Dict;
import net.xumf.support.common.BaseService;
import net.xumf.support.model.bo.KeyValueBO;

import java.util.List;
import java.util.Optional;

public interface DictService extends BaseService<Dict, Integer> {

    /**
     * 通过父id获取字典
     *
     * @param parentId 父id
     * @return List {@link Dict}
     */
    List<Dict> getByParentId(Integer parentId);

    /**
     * 获取{@link Long}类型的值
     *
     * @param key 键
     * @return long
     */
    long getLongByKey(String key);

    /**
     * 获取{@link Integer}类型的值
     *
     * @param key 键
     * @return int
     */
    int getIntByKey(String key);

    /**
     * 获取{@link String}类型的值
     *
     * @param key 键
     * @return string
     */
    String getStringByKey(String key);

    /**
     * 获取{@link Double}类型的值
     *
     * @param key 键
     * @return double
     */
    double getDoubleByKey(String key);

    /**
     * 获取{@link Float}类型的值
     *
     * @param key 键
     * @return float
     */
    float getFloatByKey(String key);


    /**
     * 获取所有子字典
     *
     * @param key 键
     * @return list {@link KeyValueBO}
     */
    List<KeyValueBO> getAllSubDictByKey(String key);

    /**
     * 获取一个子字典
     *
     * @param key 键
     * @return {@link KeyValueBO}
     */
    Optional<KeyValueBO> getOneSubDictByKey(String key);

}